// pages/theater/theater.js

// 引入qqmapsdk 
const QQMapWX = require('../../lib/qqmap-wx-jssdk')
let qqmapsdk = new QQMapWX({
  key: 'A7CBZ-FZ73U-PUPV7-BINEG-ICD57-KAB6J'
})

Page({

  /**
   * 页面的初始数据
   */
  data: {
    city: '未选择',
    theaterList: [], //存储当前电影院列表
  },

     // 进入城市列表选择
    async cityList(){
      // 只有位置权限打开才可以进入
      let isLocationAuth = await this.isGetSetting();
      if(isLocationAuth){
        wx.navigateTo({
          url: '/pages/cityList/cityList',
        })
      }else{
        wx.showToast({
          title: '获取位置权限失败',
          icon:'error'
        })
      }
    },

  // 打开内置地图
  openLocation(e) {
    let index = e.currentTarget.dataset.index
    let current = this.data.theaterList[index]
    wx.openLocation({
      latitude: current.location.lat,
      longitude: current.location.lng,
      scale: 18,
      name: current.title,
      address: current.address
    })
  },
  // 用户是否打开位置权限
  isGetSetting() {
    return new Promise((resolve, rejected) => {
      wx.getSetting({
        success(res) {
          resolve(res.authSetting['scope.userLocation'])
        }
      })
    })
  },
  // 初始化获得城市名
  async initCity() {
    //获取用户是否授权过地理位置
    let isLocationAuth = await this.isGetSetting();
    // console.log(isLocationAuth, 'isLocationAuth');
    if (isLocationAuth) {
      let city = getApp().globalData.city
      // 获取用户权限后有两种情况--city有值和无值
      if(city){
        // 有值
        this.setData({
          city: getApp().globalData.city
        })
        this.search()
      }else{
        this.search()
      }
    } else {
      // 没值申请权限
      this.getAgree()
    }
  },

  // 加载当前定位
  mygetLocation() {
    return new Promise((resolve, rejected) => {
      qqmapsdk.reverseGeocoder({
        success: (res) => {
          let city = res.result.address_component.city
          this.setData({
            city: city
          })
          getApp().globalData.city = city;
          resolve(city)
          // 在APP全局存储city名
        },
        fail: (err) => {
          console.warn(err)
        }
      })
    })

  },

  //   开启权限
  openpower() {
    wx.openSetting({
      success: (result) => {
        // console.log(result, '用户打开权限');
        this.mygetLocation()
      },
      fail: (res) => {
        console.log(res)
      },
    })
  },

  // 搜索相关影院
 search() {
    let city = getApp().globalData.city;
    qqmapsdk.search({
      keyword: '电影院',
      region: city,
      page_size: 20,
      success: res => {
        // console.log(res, '执行了search');
        // 把获取到的数据存储到影院列表中
        let data = res.data
        data.forEach(el => {
          el._distance = (el._distance / 1000).toFixed(2)
        });
        this.setData({
          theaterList: data
        });
      }
    })
  },

  // 在未获取权限情况下获取权限
  getAgree() {
    wx.showModal({
      title: "提示",
      content: "未赋予定位权限，是否重新授予相关权限？",
      success: res => {
        if (res.confirm) {
          this.openpower()
        }
      }
    })
  },


  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function () {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function () {
    this.initCity()
  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function () {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function () {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function () {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function () {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage: function () {

  }
})